1. Field of the Invention
This invention relates to computer software adapted for execution on a computer network. More specifically, this invention relates to the management and distribution of computer application program execution on a computer network containing various resources.
2. Description of Related Art
Many modern business computer applications require the division and distribution of processing tasks between several computational resources. A variety of systems and processes have been developed to manage and/or distribute computer processes across a network. Some such approaches include, PVM, developed by Oak Ridge National Labs, which is a set of programming libraries to allow a user to build xe2x80x9cmulticomputers,xe2x80x9d which is a set of independent machines on a network that share application processing to create heterogeneous network computing; Inferno, a Lucent Technologies programming language, xe2x80x9cvirtual machine,xe2x80x9d and communications protocol; Jini, produced by Sun Microsystems, is a set of Java classes and a distributed computing model; Millennium, a Microsoft product that is comparable to Jini; Linda, a set of distributed computing functions, developed by Dr. David Gelemter of Yale University, to simplify parallel programming tasks distributed to multiple processors; JetSend, developed by Hewlett-Packard, lets peripheral devices communicate across a network; and Papers, a parallel processing mechanism that includes a hardware component for sharing memory and other resources, developed by Dr. Hank Dietz at Perdue University. (The inventor and applicant also wish to acknowledge the testing and evaluation support of Richard Newton of Kaysville, Utah.) Typically, these and other known techniques work on only limited networks, lack the ability to distribute application program processing across multiple computers, and/or work on only certain network systems or only with certain programming languages.
For general background material, the reader is directed to the following United States patents, each of which is hereby incorporated by reference in its entirety for the material contained therein.
U.S. Pat. No. 3,662,401 describes a method of computer program activity implementation through the use of automatic computation means whereby simultaneous execution of programs tasks to improve the system facility utilization.
U.S. Pat. No. 4,780,821 describes a procedure, which allows users of a computer system, that comprises a plurality of computers connected in a local area network to share both file resources and applications on the local area network without modification to existing programs that were designed to run in a non-network environment.
U.S. Pat. No. 4,893,234 describes an accelerator module for a data flow computer that includes an intelligent memory.
U.S. Pat. No. 5,261,097 describes a shell program, that is used in conjunction with a computer that has a multitasking operating system, to interprets sequences of commands, submitted as scripts, and passes the interpreted commands on to the operating system for execution.
U.S. Pat. No. 5,329,626 describes a computation management system for creating a number of agents to handle various aspects or portions of the computations to be performed.
U.S. Pat. No. 5,365,606 describes a virtual software machine that provides a virtual execution environment in a target computer for application software programs having execution dependencies incompatible with a software execution environment on the target computer.
U.S. Pat. No. 5,406,476 describes constrained resource allocation techniques that are implemented with a digital computer due to its improved speed and graphics capability, to allow for rapid resource constrained scheduling when given a precedence ordered list of activities.
U.S. Pat. No. 5,442,791 describes an integrated remote execution system that manages resources and provides for the distribution and remote execution of remote requests to those resources in a heterogeneous computer network environment that has a plurality of resources loosely coupled to each other.
U.S. Pat. No. 5,513,328 describes an apparatus for inter-process/inter-device communication in a system of multiple asynchronous devices, which uses processing resources in an event driven software architecture.
U.S. Pat. No. 5,530,742 describes an intelligent communications network having a service node that provides services for customers and includes a service defining apparatus for defining a plurality of services.
U.S. Pat. No. 5,548,506 describes an automated electronic network based project management server system, which automates the tasks of Project Management Coordination for organizational work-group team members.
U.S. Pat. No. 5,574,914 describes an apparatus and method for managing a number of data processing resources to produce one or more independent and separate data processing partitions.
U.S. Pat. No. 5,634,122 describes a system and method for controlling access to shared resources in a distributed computer system, by a local authorization token manager.
U.S. Pat. No. 5,666,533 describes a method and system for managing computer program execution is implemented in a set of callable run-time support services, which allows processes written in single or multiple languages to cooperate and behave in a predictable and orderly manner.
U.S. Pat. No. 5,689,638 describes a method and system for providing access to independent network resources, using logon data and server authentication data.
U.S. Pat. No. 5,689,708 describes a resource manager in a client/server 14 computer network that controls the availability of system resources.
U.S. Pat. Nos. 5,704,012 and 5,745,652 describe a resource allocation controller, for a system that comprises a plurality of resources for performing useful work, that is customized to the particular system""s available resources and configuration, dynamically allocates resources and/or alters configuration to accommodate a changing workload.
U.S. Pat. No. 5,778,222 describes a method and system for managing access to a plurality of objects located on levels within a hierarchical structure in a data processing system.
It is desirable to provide a method and system for managing the execution of computer programs that may require more than one computing resource and to manage the distribution of the computer program""s execution on a computer network.
Therefore, it is the general object of this invention to provide a method and system for the organization and management of the execution of computer programs using one or more computing resources.
It is a further object of this invention to manage the execution of computer programs over computer networks.
It is another object of this invention to provide efficient communication between computing resources executing a computer program.
Another object of this invention is to manage the various computing device types for execution of computer programs.
A further object of this invention is to provide computational task synchronization.
A still further object of this invention is to provide parallel execution of computer programs over one or more computing resources.
It is a further object of this invention to provide a system, which can manage the partial execution failure of a distributed computational task.
It is another object of this invention to provide a method and system, which automatically distributes application program execution among available computation resources.
It is still another object of this invention to provide a method and system, which permits complex computational systems to be built more quickly and to be executed more efficiently.
Another object of this invention is to provide a computer application model that simplifies the definition of an application process and then manages the complexities of the distributed execution of the computer application.
A further object of this invention is to provide a technique for defining business applications for execution using more than one computational resource over a computer network.
Another object of this invention is to provide a management method and system for distributing computational applications that ensures portability between the various applications being managed.
It is a further object of this invention to provide a computational method that supports polymorphism, which allows the definition of processors to be organized in an object-oriented manner.
It is another object of this invention to provide a method and system where each processor is identified by a standard interface.
These and other objects of this invention are intended to be covered by this disclosure and are readily apparent to those of ordinary skill in the art upon review of the following drawings, detailed description, claims and abstract.
This specification includes a Microfiche Appendix, which includes 4 pages of microfiche with a total of 349 frames. The microfiche appendix includes computer source code of one preferred embodiment of the invention. In other embodiments of the invention, the inventive concept may be implemented in other computer code, in computer hardware, in other circuitry or in a combination of these, or otherwise. The Microfiche Appendix is hereby incorporated by reference in its entirety and is considered to be a part of the disclosure of this specification.